package cn.tedu.csmall.cart.webapi.kafka;

import cn.tedu.csmall.commons.pojo.cart.model.Cart;
import com.google.gson.Gson;
import org.apache.commons.lang.math.RandomUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

// 这个类中要编写代码进行周期运行,所以要交由Spring管理
@Component
public class Producer {

    // 直接从Spring容器中获取能够操作Kafka的对象
    // 这个对象是在添加好依赖和yml配合后,启动SpringBoot时自动添加到Spring容器的
    // KafkaTemplate<[话题名称的类型],[消息的类型]>
    @Autowired
    private KafkaTemplate<String,String> kafkaTemplate;

    int i=1;
    // 实现每隔10秒钟(10000毫秒)运行一次的方法
    @Scheduled(fixedRate = 10000)
    public void sendMessage(){
        // 实例化Cart对象并赋值,尝试发送给Kafka
        Cart cart=new Cart();
        cart.setId(i++);
        cart.setCommodityCode("PC100");
        cart.setUserId("UU100");
        cart.setPrice(RandomUtils.nextInt(90)+10);
        cart.setCount(RandomUtils.nextInt(10)+1);
        //  {"id":"1","userId":"UU100",.....}
        // 利用gson工具,将cart对象转换为json格式字符串方便发送
        Gson gson=new Gson();
        String json=gson.toJson(cart);
        System.out.println("要发送的消息为:"+json);
        // 执行发送
        kafkaTemplate.send("myCart",json);
    }


}
